#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *strMax(char *, char *);
int *func();
int main(){

    // 这两个指针只是指针变量，但没有指向有效的内存区域。
    // 在 scanf("%s", str1); 时，程序会尝试把用户输入的字符串存入 str1 所指向的内存区域，
    // 但 str1 没有被初始化，它指向的地址是随机的，会导致段错误（Segmentation Fault）。
    // char *str1;
    // char *str2;
    char *str1 = (char *)malloc(100 * sizeof(char));
    char *str2 = (char *)malloc(100 * sizeof(char));
    
    printf("输入第一个字符串：");
    scanf("%s", str1);
    printf("输入第二个字符串：");
    scanf("%s", str2);

    printf("%s\n", strMax(str1, str2));

    int *ptr = func();
    printf("ptr = %p\n", ptr);


    return 0;
}

char *strMax(char *str1, char *str2){
    char *str;

    str = (strlen(str1) > strlen(str2)) ? str1 : str2;


    return str;
}

int *func(){
    // int a = 100; // nil 局部变量函数调用后就释放
    static int a = 100;

    return &a;
}